import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:excel/excel.dart';
import 'dart:html' as html;

class ExportExcelPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('导出 Excel')),
      body: Center(
        child: ElevatedButton(
          onPressed: _exportExcel,
          child: Text('导出 Excel 文件'),
        ),
      ),
    );
  }

  void _exportExcel() async {
    // 创建一个Excel对象
    Excel excel = Excel.createExcel();

    // 创建一个sheet
    Sheet sheet = excel['Sheet1'];

    // 向sheet中添加数据
    List<List> data = [
      ['Name', 'Age', 'Country'],
      ['John', 30, 'USA'],
      ['Jane', 25, 'UK'],
      ['Mark', 35, 'Canada']
    ];
    // 设置背景色的行
    for (var i = 0; i < data.length; i++) {
      List row = data[i];
      var excelRow = sheet.appendRow(row);

      // 模拟设置背景色
      if (i == 1) {
        // 设置第二行背景色为浅蓝色
        for (var cell in excelRow) {
          cell.cellStyle = CellStyle(fontColorHex: 'FF999999'); // 设置颜色为浅蓝色
        }
      }
    }


// 如果需要查看 Excel 内容，可以通过打印
    print(excel.tables); // 输出工作表内容

    // 转换Excel为二进制数据
    List<int> excelBytesList = excel.encode()!;

    // 将List<int>转换为Uint8List
    Uint8List excelBytes = Uint8List.fromList(excelBytesList);

    // 将Excel保存为blob并触发下载
    final blob = html.Blob([excelBytes]);
    final url = html.Url.createObjectUrlFromBlob(blob);
    final anchor = html.AnchorElement(href: url)
      ..target = 'blank'
      ..download = 'exported_data.xlsx';

    anchor.click();

    // 释放内存
    html.Url.revokeObjectUrl(url);
  }

}
